// miniprogram/pages/home/home.js
const app = getApp();
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 骨架屏是否显示
    loading: true,

    // 切换收入支出的主类型
    toggleMainActive: 0,
    // 收入支出的主类型的数据
    toggleMainData: [{
        title: "收入",
        type: "sr"
      },
      {
        title: "支出",
        type: "zc"
      }
    ],

    // 收入支出的子类型的数据
    get_aa: [],
    // 控制收入支出子类型每页数据的个数
    pagecount: 10,

    // 切换账户数据
    selectClass: [{
        title: "现金",
        type: "xj"
      },
      {
        title: "支付宝",
        type: "zfb"
      },
      {
        title: "微信",
        type: "wx"
      },
      {
        title: "信用卡",
        type: "xyk"
      },
      {
        title: "储蓄卡",
        type: "cxk"
      },
    ],
    // 选择账户切换高亮
    selectClassActive: 0,

    // 记录日期
    date: '',
    // 记录钱
    money: '',
    // 记录备注
    remark: '',

    // 高亮的页面下标
    page: -1,

    // 高亮的下标
    PageIndex: -1,

    // 给选择日期设置一个实时的end日期
    enddate: "",
    // 给选择日期设置一个开始的时间
    startDate: "",

    // 控制按钮显示哪一个
    is_user_auth: ""
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.getSubtypeData()
  },


  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    this.endDate()
    this.setData({
      loading: false
    })
    
    if (app.globalData.isAuth) {
      this.setData({
        is_user_auth: app.globalData.isAuth
      })
    }
  },

  // 给选择日期设置一个实时的end日期
  endDate() {
    let nowdate = new Date()
    let y = nowdate.getFullYear();
    let m = nowdate.getMonth() + 1;
    let d = nowdate.getDate();
    this.setData({
      enddate: `${y}-${m}-${d}`,
      startDate: app.globalData.startDate
    })
  },

  // 切换收入支出的主要类型的方法
  toggleMain(e) {
    this.setData({
      toggleMainActive: e.currentTarget.dataset.index
    })
  },

  // 切换账户类型
  toggleSelectClass(e) {

    this.setData({
      selectClassActive: e.target.dataset.index
    })
  },

  // 查看云函数数据
  getSubtypeData() {
    // 调用云函数
    wx.cloud.callFunction({
      // 云函数名称
      name: "get_aa",
      // 参数
      data: {
        id: "a0001"
      }
    }).then(res => {
      // 拿到res.result.data
      let data = res.result.data;
      // [
      //   {
      //     // 当页的激活下标
      //     activeIndex: 0,
      //     data: [{}, {}, ......]
      //   }
      // ]
      // 总数据
      let get_aa_data = [];
      // 循环res.result.data
      for (let i = 0; i < data.length; i += this.data.pagecount) {
        // 每循环一次创建一个子类型页面
        let type = {
          activeIndex: -1,
          data: []
        }
        // 将切除出来的数据qush进每一页数据type的data里面
        type.data.push(...data.slice(i, i + this.data.pagecount))
        get_aa_data.push(type)
      }
      this.setData({
        get_aa: get_aa_data
      })
    }).catch(err => {

    })
  },

  // 点击子类型高亮
  selectPageChirenld(e) {
    // 每一页个数的下表
    let index = e.currentTarget.dataset.index
    //  每一页的下表
    let page = e.currentTarget.dataset.page
    // 判断是不是重复点击高点了 是的就拦截他 不给他继续往下走
    let i = this.data.get_aa[page].activeIndex
    if (i === index) {
      return
    }
    this.data.get_aa.forEach((v, i) => {
      if (page === i) {
        return
      }
      v.activeIndex = -1
    });
    this.data.get_aa[page].activeIndex = index
    this.setData({
      get_aa: this.data.get_aa,
      page: page,
      PageIndex: index
    })
  },


  // // 记录日期
  // recordDate(e){
  //   
  //   if(e.detail.value === ""){
  //     return
  //   }
  //   this.setData({
  //     date:e.detail.value
  //   })
  // },

  // // 记录金额
  // recordmoney(e){
  //   if(e.detail.value.length === 0){
  //     return
  //   }
  //   this.setData({
  //     money:e.detail.value
  //   })
  // },

  // // 记录备注
  // recordRemark(){
  //   if(e.detail.value.length === 0){
  //     return
  //   }
  //   this.setData({
  //     remark:e.detail.value
  //   })
  // },

  // 将记录日期 金额 备注的方法合并
  DataMoneyRemark(e) {
    let key = e.currentTarget.dataset.key
    if (key === "money") {
      e.detail.value = (e.detail.value - 0).toFixed(2)
    }
    this.setData({
      [key]: e.detail.value
    })
  },

  // 记一笔按钮事件
  save(e) {
    // 调用提示记录
    wx.showLoading({
      title: '添加账单中',
    });


    // 这里使用判断拦截. 防止后面因为没有值而报错
    // 判断是否选择了子类型
    if (this.data.PageIndex === -1) {
      wx.showToast({
        title: '请选择子类型',
        icon: 'none',
        duration: 2000
      })
      return
    }
    // 判断是否选择日期
    if (this.data.date === "") {
      wx.showToast({
        title: '请选择日期',
        icon: 'none',
        duration: 2000
      })
      return
    }
    // 判断是否填写金额
    if (this.data.money === "" || this.data.money === 0 || this.data.money <= 0) {
      wx.showToast({
        title: '请填写金额',
        icon: 'none',
        duration: 2000
      })
      return
    }


    // 获取主要类型
    let maintype = this.data.toggleMainData[this.data.toggleMainActive]
    // 获取子类型
    let mainChildrenType = this.data.get_aa[this.data.page].data[this.data.PageIndex]
    // 获取账户选择
    let selectClass = this.data.selectClass[this.data.selectClassActive]
    // 我是日期
    let date = this.data.date
    // 我是金额
    let money = this.data.money
    // 我是备注
    let remark = this.data.remark


    // 调用云函数
    wx.cloud.callFunction({
      name: "add_booking",
      data: {
        maintype,
        mainChildrenType,
        selectClass,
        date,
        money,
        remark
      }
    }).then(res => {
      // 添加成功后去掉提示
      wx.hideLoading()


      this.data.get_aa[this.data.page].activeIndex = -1
      this.setData({
        // 清空账户高亮
        selectClassActive: 0,
        // 清空值
        PageIndex: -1,
        // 清空页码值
        page: -1,
        // 还原get_aa数据
        get_aa: this.data.get_aa,
        // 清空money
        money: "",
        // 清空date
        date: "",
        // 清空备注
        remark: ""
      })
    }).catch(err => {

    })
  },

  // 获取用户信息
  get_user_info(e) {

    if (e.detail.userInfo) {
      wx.showLoading({
        title: '登录成功',
      })
      wx.cloud.callFunction({
        name: 'add_user_info',
        data: {
          ...e.detail.userInfo
        }
      }).then(res => {
        wx.hideLoading()

        app.globalData.isAuth = true;
        app.globalData.nickName = e.detail.userInfo.nickName,
          app.globalData.avatarUrl = e.detail.userInfo.avatarUrl,
          this.setData({
            is_user_auth: true
          })
      }).catch(err => {

      })
    }
  },


  getUserProfile(e) {
    wx.getUserProfile({
      desc: '用于完善会员资料', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
      success: (e) => {
        if (e.userInfo) {
          wx.showLoading({
            title: '登录成功',
          })
          wx.cloud.callFunction({
            name: 'add_user_info',
            data: {
              ...e.userInfo
            }
          }).then(res => {
            wx.hideLoading()

            app.globalData.isAuth = true;
            app.globalData.nickName = e.userInfo.nickName,
            app.globalData.avatarUrl = e.userInfo.avatarUrl,
              this.setData({
                is_user_auth: true
              })
          }).catch(err => {

          })
        }
      }
    })
  },

})